import pandas as pd
import matplotlib.pyplot as plt
import os  

plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号

# 读取Excel文件
try:
    data = pd.read_excel('d:\\桌面\\实习\\git-mcp-test\\project\\练习一\\FhjlViewDD.xlsx')
    
    # 打印所有列名，方便检查
    print("所有列名:", data.columns.tolist())
    
    # 假设日期列名为'日期'，如果不是请修改为实际列名
    date_column = '创建时间'  # 使用实际的日期列名
    
    # 将日期列转换为datetime类型
    data[date_column] = pd.to_datetime(data[date_column], errors='coerce')
    
    # 筛选6月份数据
    june_data = data[data[date_column].dt.month == 6]
    
    # 按客户分组计算矿粉货运总量
    mineral_demand = june_data.groupby('客户')['净重']  # 根据实际列名修改.sum().sort_values(ascending=False)
    
    mineral_demand = june_data.groupby('客户')['净重'].sum().sort_values(ascending=False)
    mineral_demand_df = pd.DataFrame({'客户': mineral_demand.index, '矿粉货运量': mineral_demand.values})
    mineral_demand_df.to_excel('D:\桌面\实习\git-mcp-test\project\练习一\周文俐\(c)6月份各个客户矿粉货运需求量排名.xlsx', index=False)
    # 生成柱状图
    plt.figure(figsize=(12, 6))
    mineral_demand.plot(kind='bar')
    plt.title('6月份矿粉货运需求量排名')
    plt.xlabel('客户名称')
    plt.ylabel('货运量(吨)')
    plt.xticks(rotation=45)
    plt.tight_layout()
    plt.savefig('d:\\桌面\\实习\\git-mcp-test\\project\\练习一\\(c)6月份各个客户矿粉货运需求量排名图.png')
    plt.show()
    
    print("处理完成，结果已保存到(c)6月份各个客户矿粉货运需求量排名.xlsx和.png文件")
    
except Exception as e:
    print("发生错误:", str(e))
    print("请检查Excel文件路径和列名是否正确")
    print("当前工作目录:", os.getcwd())
    print("文件是否存在:", os.path.exists('d:\\桌面\\实习\\git-mcp-test\\project\\练习一\\FhjlViewDD.xlsx'))
